#ifndef GY_GRAPHICSRECTWIDTHHEIGHT_H
#define GY_GRAPHICSRECTWIDTHHEIGHT_H

#include "Graphics/BasicGraphics/GY_BasicsGraphicsObject.h"
#include "Graphics/GY_Object.h"
#include "GY_ControlLibrary_global.h"
#include <QObject>
#include <QVariant>
#include <QPointF>
#include <QDebug>
#include <QPen>

class GY_CONTROLLIBRARY_EXPORT GY_GraphicsRectWidthHeight : public GY_BasicsGraphicsObject
{
    Q_OBJECT
public:
    explicit Q_INVOKABLE GY_GraphicsRectWidthHeight(const QString &guid,QGraphicsItem *parent = nullptr);
    /**
     * @brief GY_GraphicsRectWidthHeight 拷贝构造函数
     * @param guid 图形唯一编码
     * @param Position 位置变化点
     * @param pointTran 形状变化点
     * @param x 原点横坐标
     * @param y 原点纵坐标
     * @param width 矩形宽度
     * @param height 矩形高度
     * @param parent 父级Item
     */
    explicit Q_INVOKABLE GY_GraphicsRectWidthHeight(const QString &guid,
                                        qreal x,qreal y,qreal width,qreal height,
                                        QGraphicsItem *parent= nullptr);
//    ~GY_GraphicsRectWidthHeight();
private:
    /**
     * @brief updatePoint 更新各点的位置
     * @param name
     * @param value
     * @return
     */
    bool updatePoint(const QString &name, const QVariant &value);
    /**
     * @brief updatePointPosition 更新宽高变化后各点的位置
     * @param Position 拖动点
     * @param pointTran 形变点
     * @param width 宽度
     * @param height 高度
     * @return 是否返回为真
     */
    bool updatePointPosition(const QVariant &Position, const QVariant &pointTran, const QVariant &width, const QVariant &height);
    /**
     * @brief updatePath 更新矩形绘制
     * @param Position 拖动点
     * @param pointTran 形变点
     * @param pointX 参考点1
     * @param pointY 参考点2
     */
    void updatePath(QPointF Position, QPointF pointTran, QPointF pointX, QPointF pointY);
    /**
     * @brief initializationPropertyInfo 初始化信息
     */
    void initializationPropertyInfo();
    /**
     * @brief updateWidth 更新矩形宽度
     * @param name
     * @param value
     * @return
     */
    bool updateWidth(const QString &name, const QVariant &value);
    /**
     * @brief updateHeight 更新矩形高度
     * @param name
     * @param value
     * @return
     */
    bool updateHeight(const QString &name, const QVariant &value);

signals:

};

#endif // GY_GRAPHICSRECTWIDTHHEIGHT_H
